#pragma once
#include <nice2d/component.h>
#include <nice2d/piece/piecescene.h>

class PieceSorter : public Component
{
    DECLARE_OBJECT(PieceSorter)
public:
    PieceSorter(NodePointer object = nullptr);
    virtual ~PieceSorter();
public:
    virtual void sort(std::shared_ptr<PieceScene> scene,const sf::Color& color) = 0;
    void clear();
    std::shared_ptr<Piece> pick()const;
protected:
    void addPiece(std::weak_ptr<Piece> piece);
private:
    std::unique_ptr<class PieceSorterData> data;
};
